

package com.scs.application.modules.base.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.scs.application.core.model.DataEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 商品实体对象
 *
 */
@TableName("material")
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@Accessors(chain = true)
public class Material extends DataEntity implements Serializable {

    /** 供应商标识 */
    /*@NotNull(message="供应商标识不能为空")*/
    private String supplierId;

    /** 品类ID */
    @NotNull(message="品类ID不能为空")
    private String catalogId;

    /** 商品类型 */
    @NotNull(message="商品类型不能为空")
    private String materialTypeCode;

    /** 品名 */
    @NotBlank(message="品名不能为空")
    @Length(min=1, max=100, message="品名长度必须介于 1 和 50 之间")
    private String materialName;

    /** 商品名 */
    private String materialTradeName;

    /** ERP代码 */
    @Length(max=30, message="ERP代码长度必须介于 0 和 30 之间")
    private String materialErpCode;

    /** 助记码 */
    @Length(max=50, message="助记码长度必须介于 0 和 30 之间")
    private String pinyin;

    /** 注册证号 */
    @Length(max=50, message="注册证号长度必须介于 0 和 50 之间")
    private String certificateNo;

    /** 注册证效期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date certificateExpiredDate;

    /** 注册证开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date certificateExpiredStartDate;

    /** 批准文号 */
    @Length(max=50, message="批准文号长度必须介于 0 和 50 之间")
    private String approvalNo;

    /** 生产厂商 */
    private String manufacturerId;


    @TableField(exist = false)
    private String supplierName;

    @TableField(exist = false)
    private String catalogName;

    @TableField(exist = false)
    private String manufacturerName;

    /** 注册证号 */
    @TableField(exist = false)
    private String hospitalCertificateNo;

    /** 注册证开始日期 */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date hospitalCertificateExpiredStartDate;

    /** 注册证日期 */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @JSONField(format = "yyyy-MM-dd")
    private java.util.Date hospitalCertificateExpiredDate;

    /** 是否植入耗材 */
    private Integer flagInvasive;

    // 禁用
    private Integer flagDisabledScp;

    // 禁用说明
    private String disabledRemarkScp;


    // 已供货医院数量
    @TableField(exist = false)
    private Integer hmNum;

    /**商品类型*/
    public static final int material_Type_Code_MATERIAL = 1; //药品
    public static final int TYPE_CODE_CONSUMABLES = 2; //耗材
    public static final int material_Type_Code_REAGENT = 3; //试剂
    public static final int material_Type_Code_PACKAGE = 4; //跟台包


    //医保代码20位
    private String hisMedicareNo;

    //医保名称20位
    private String hisMedicareName;

    //医保代码27位
    private String hisMedicareNo2;

    //医保名称27位
    private String hisMedicareName2;

    @TableField(exist = false)
    private MaterialSpec materialSpec;
    private String remark;
}

